package com.wang.springframework.core.convert;

import com.sun.istack.internal.Nullable;

/**
 * @author wangjianhua
 * @Description 类型转换抽象接口
 *用于类型转换的服务接口。这是转换系统的入口点。
 *调用{@link#convert（Object，Class）}使用此系统执行线程安全类型转换。
 * @date 2021/9/7/007 10:46
 **/
public interface ConversionService {

    /**
     * 如果{@code sourceType}的对象可以转换为{@code targetType}，则返回{@code true}
     * @param sourceType 资源类型
     * @param targetType 目标类型
     * @return boolean
     */
    boolean canConvert(@Nullable Class<?> sourceType,Class<?> targetType);

    /**
     * 转换目标资源为泛型指定类
     * @param source 转换的资源
     * @param targetType 目标类型class
     * @param <T> 泛型
     * @return T
     */
    <T> T convert(Object source,Class<T> targetType);
}
